package com.dtx.template;

/**
 * StringDisplay也是是AbstractDisplay的子类
 */
public class StringDisplay extends AbstractDisplay{

    private String string;  //需要显示的字符串

    private int width;  //以字节为单位计算出的字符串长度

    //以字节为单位计算出的字符串长度构造函数中接收的字符串被保存在字段中
    //同时将字符串的字节长度也保存在字段中，以供后面使用
    public StringDisplay(String string) {
        this.string = string;
        this.width = string.getBytes().length;
    }

    @Override
    public void open() {
        printLine();
    }

    @Override
    public void print() {
        System.out.println("|" + string + "|");
    }

    @Override
    public void close() {
        printLine();
    }

    //被open和close方法调用
    //由于可见性是private，因此只能在本类中被调用



    private void printLine(){
        System.out.print("+");    //显式表示方框的角的"+"
        for (int i = 0; i < width; i++) {   //显式width个"-"
            System.out.print("-");    //组成方框
        }
        System.out.println("+");    //显式表示方框的角的"+"
    }
}
